package tk.sunlatus.project.usermanage.domain.mybatismappers;

import java.util.List;

import tk.sunlatus.project.usermanage.domain.User;

/**
 * @{# UserMapper.java Create on Mar 11, 2012 7:46:53 PM
 * 
 *     类功能说明: mybatis数据库操作接口
 * 
 *     <p>
 *     Copyright: Copyright(c) 2012
 *     </p>
 * @Version 1.0
 * @author sunlotus
 */
public interface UserMapper {

    /**
     * 方法描述：查询用户信息
     * 
     * @param userID
     *            用户ID
     * @return
     */
    User queryByUserID(String userID);

    /**
     * 方法描述：查询盐信息
     * 
     * @param userID
     * @return
     */
    String querySaltByUserID(String userID);

    /**
     * 方法描述：添加用户信息
     * 
     * @param user
     */
    void saveUser(User user);

    /**
     * 方法描述：批量导入用户
     * 
     * @param users
     * @return
     */
    int batchSaveUser(User[] users);

    /**
     * 方法描述：删除用户
     * 
     * @param userID
     */
    void removeUer(String userID);

    /**
     * 方法描述：批量删除用户
     * 
     * @param userIDs
     * @return
     */
    int batchRemoveUsers(String[] userIDs);

    /**
     * 方法描述：注销用户 （ 根据策略保存用户信息一段时间后删除用户信息）
     * 
     * @param userID
     *            用户信息
     */
    int deregistration(User user);

    /**
     * 方法描述：批量注销用户
     * 
     * @param userIDs
     * @return
     */
    int deregistrationUsers(User[] users);

    /**
     * 方法描述：查询用户列表
     * 
     * @param length
     *            记录数
     * @param offset
     *            起始记录
     * 
     * @param user
     * @return
     */
    List<User> queryByCondation(String userID, String userName, int offset, int length);

    /**
     * 方法描述： 修改用户信息
     * @param user 用户信息
     * @return 影响记录数
     */
    int modifyUser(User user);

    // void saveAuthInfo(AuthInfo authInfo);
}
